![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╨Φ±εΓαφΦσ Γ εΩφσ |
╚±⌡εΣφ√σ ≥σΩ±≥√ α∩δσ≥α Draw╚±⌡εΣφ√σ ≥σΩ±≥√ α∩δσ≥α Draw Γ√ φαΘΣσ≥σ Γ δΦ±≥Φφπσ 1. ╦Φ±≥Φφπ 1. ╘αΘδ draw.java import java.applet.*; import java.awt.*; public class draw extends Applet { Toolkit tk; String szFontList[]; FontMetrics fm; int yStart = 20; int yStep; String parm_TestString; public void init() { tk = Toolkit.getDefaultToolkit(); szFontList = tk.getFontList(); parm_TestString = getParameter("TestString"); } public String getAppletInfo() { return "Name: draw"; } public void paint(Graphics g) { int yDraw; Dimension dimAppWndDimension = getSize(); g.clearRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); g.setColor(Color.yellow); g.fillRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); g.setColor(Color.black); g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); fm = g.getFontMetrics(); yStep = fm.getHeight(); for(int i = 0; i < szFontList.length; i++) { g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g.drawString(szFontList[i], 10, yStart + yStep * i); fm = g.getFontMetrics(); yStep = fm.getHeight(); g.setFont(new Font(szFontList[i], Font.PLAIN, 12)); g.drawString(parm_TestString, 100, yStart + yStep * i); } yDraw = yStart + yStep * szFontList.length + yStep; Polygon p = new Polygon(); p.addPoint(70, yDraw); p.addPoint(150, yDraw + 30); p.addPoint(160, yDraw + 80); p.addPoint(190, yDraw + 60); p.addPoint(140, yDraw + 30); p.addPoint(70, yDraw + 39); g.drawPolygon(p); g.setColor(Color.red); g.drawRect(10, yDraw + 85, 200, 100); g.setColor(Color.black); g.drawArc(10, yDraw + 85, 200, 100, -50, 320); } public String[][] getParameterInfo() { String[][] info = { { "TestString", "String", "Test string" } }; return info; } } ╠σ≥εΣ init╧≡Φ ΦφΦ÷ΦαδΦτα÷ΦΦ α∩δσ≥α ∞σ≥εΣ init ΦτΓδσΩασ≥ ±∩Φ±εΩ Σε±≥≤∩φ√⌡ °≡Φ⌠≥εΓ Φ ∩≡ΦφΦ∞ασ≥ τφα≈σφΦσ ∩α≡α∞σ≥≡α TestString, ∩σ≡σΣαΓασ∞εσ α∩δσ≥≤ Γ ΣεΩ≤∞σφ≥σ HTML. ╚τΓδσ≈σφΦσ ±∩Φ±Ωα °≡Φ⌠≥εΓ╧≡ε÷σΣ≤≡α ΦτΓδσ≈σφΦ ±∩Φ±Ωα Σε±≥≤∩φ√⌡ °≡Φ⌠≥εΓ Σε±≥α≥ε≈φε ∩≡ε±≥α Φ Γ√∩εδφ σ≥± ±δσΣ≤■∙Φ∞ εß≡ατε∞: Toolkit tk; String szFontList[]; . . . tk = Toolkit.getDefaultToolkit(); szFontList = tk.getFontList(); └∩δσ≥ Γ√τ√Γασ≥ ±≥α≥Φ≈σ±ΩΦΘ ∞σ≥εΣ getDefaultToolkit Φτ Ωδα±±α Toolkit Φ τα≥σ∞, ∩εδⁿτ≤ ±ⁿ ∩εδ≤≈σφφεΘ ±±√δΩεΘ, ΦτΓδσΩασ≥ ±∩Φ±εΩ °≡Φ⌠≥εΓ, τα∩Φ±√Γα σπε Γ ∞α±±ΦΓ szFontList. ─δ ≈σπε σ∙σ ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ Ωδα±± Toolkit? ╩δα±± Toolkit Γδ σ≥± αß±≥≡αΩ≥φ√∞ ±≤∩σ≡Ωδα±±ε∞ Σδ Γ±σ⌡ ≡σαδΦτα÷ΦΘ AWT. ╧ε≡εµΣσφφ√σ ε≥ φσπε Ωδα±±√ Φ±∩εδⁿτ≤■≥± Σδ ∩≡ΦΓ τΩΦ ≡ατδΦ≈φ√⌡ Ωε∞∩εφσφ≥ ΩεφΩ≡σ≥φ√⌡ ≡σαδΦτα÷ΦΘ. ╤ετΣαΓα ±ΓεΦ α∩δσ≥√, Γ√ ß≤Σσ≥σ ≡σΣΩε ∩≡Φßσπα≥ⁿ Ω ≤±δ≤πα∞ ²≥επε Ωδα±±α. ╬ΣφαΩε Γ φσ∞ σ±≥ⁿ φσ±ΩεδⁿΩε ∩εδστφ√⌡ ∞σ≥εΣεΓ, ∩≡ε≥ε≥Φ∩√ Ωε≥ε≡√⌡ ∞√ ∩σ≡σ≈Φ±δΦ∞ φΦµσ:
╧εδ≤≈σφΦσ ±±√δΩΦ φα Toolkit public static Toolkit getDefaultToolkit();
╬∩≡σΣσδσφΦσ ≥σΩ≤∙σΘ ÷Γσ≥εΓεΘ ∞εΣσδΦ, Γ√ß≡αφφεΘ Γ Ωεφ≥σΩ±≥ ε≥εß≡αµσφΦ public abstract ColorModel getColorModel();
╧εδ≤≈σφΦσ ±∩Φ±Ωα °≡Φ⌠≥εΓ, Σε±≥≤∩φ√⌡ α∩δσ≥≤ public abstract String[] getFontList();
╧εδ≤≈σφΦσ ∞σ≥≡ΦΩ ταΣαφφεπε °≡Φ⌠≥α public abstract FontMetrics getFontMetrics(Font font);
╧εδ≤≈σφΦσ ≡α±≥≡εΓεπε Φτεß≡αµσφΦ ∩ε Φ∞σφΦ ⌠αΘδα public abstract Image getImage(String filename);
╧εδ≤≈σφΦσ ≡α±≥≡εΓεπε Φτεß≡αµσφΦ ∩ε αΣ≡σ±≤ URL public abstract Image getImage(URL url);
╬∩≡σΣσδσφΦσ ≡ατ≡σ°σφΦ ²Ω≡αφα Γ ≥ε≈Ωα⌡ φα Σ■Θ∞ public abstract int getScreenResolution();
╨ατ∞σ≡√ ²Ω≡αφα Γ ∩ΦΩ±σδα⌡ public abstract Dimension getScreenSize();
╧εΣπε≥εΓΩα ≡α±≥≡εΓεπε Φτεß≡αµσφΦ Σδ Γ√ΓεΣα public abstract boolean prepareImage( Image image, int width, int height, ImageObserver observer);
╤Φφ⌡≡εφΦτα÷Φ ±ε±≥ε φΦ Toolkit public abstract void sync(); ═αΦßεδσσ Φφ≥σ≡σ±φ√, ± φα°σΘ ≥ε≈ΩΦ τ≡σφΦ , ∞σ≥εΣ√ getFontList, getScreenResolution Φ getScreenSize, ± ∩ε∞ε∙ⁿ■ Ωε≥ε≡√⌡ α∩δσ≥ ∞εµσ≥, ±εε≥Γσ≥±≥Γσφφε, ∩εδ≤≈Φ≥ⁿ ±∩Φ±εΩ °≡Φ⌠≥εΓ, ε∩≡σΣσδΦ≥ⁿ ≡ατ≡σ°σφΦσ Φ ≡ατ∞σ≡ ²Ω≡αφα. ╧ε±δσΣφΦσ ΣΓα ∩α≡α∞σ≥≡α ∩ετΓεδ ■≥ ±⌠ε≡∞Φ≡εΓα≥ⁿ ±εΣσ≡µΦ∞εσ εΩφα α∩δσ≥α ε∩≥Φ∞αδⁿφ√∞ εß≡ατε∞ Φ±⌡εΣ Φτ εß·σ∞α Φφ⌠ε≡∞α÷ΦΦ, Ωε≥ε≡√Θ ∞εµσ≥ Γ φσ∞ ≡ατ∞σ±≥Φ≥ⁿ± . ╧εδ≤≈σφΦσ τφα≈σφΦ ∩α≡α∞σ≥≡εΓ─ε ±Φ⌡ ∩ε≡ φα°Φ α∩δσ≥√ φσ ∩εδ≤≈αδΦ ∩α≡α∞σ≥≡εΓ Φτ ΣεΩ≤∞σφ≥εΓ HTML, Γ Ωε≥ε≡√σ ∞√ Φ⌡ Γ±≥≡αΦΓαδΦ. ╩εφσ≈φε, Γ±σ Ωεφ±≥αφ≥√, ≥σΩ±≥εΓ√σ ±≥≡εΩΦ, αΣ≡σ±α URL Φ Σ≡≤π≤■ Φφ⌠ε≡∞α÷Φ■ ∞εµφε ταΩεΣΦ≡εΓα≥ⁿ φσ∩ε±≡σΣ±≥Γσφφε Γ Φ±⌡εΣφε∞ ≥σΩ±≥σ α∩δσ≥α, εΣφαΩε, ε≈σΓΦΣφε, ²≥ε ε≈σφⁿ φσ≤Σεßφε. ╧εδⁿτ≤ ±ⁿ ε∩σ≡α≥ε≡α∞Φ <PARAM>, ≡α±∩εδεµσφφ√∞Φ Γ ΣεΩ≤∞σφ≥σ HTML ±≡ατ≤ ∩ε±δσ ε∩σ≡α≥ε≡α <APPLET>, ∞εµφε ∩σ≡σΣα≥ⁿ α∩δσ≥≤ ∩≡εΦτΓεδⁿφεσ ΩεδΦ≈σ±≥Γε ∩α≡α∞σ≥≡εΓ, φα∩≡Φ∞σ≡, Γ ΓΦΣσ ≥σΩ±≥εΓ√⌡ ±≥≡εΩ: <applet code=MyApplet.class id=MyApplet . . . width=320 height=240 > <param name=ParamName1 value="Value 1"> <param name=ParamName2 value="Value 2"> <param name=ParamName3 value="Value 3"> <param name=ParamName4 value="Value 4"> . . . </applet> ╟Σσ±ⁿ ≈σ≡στ ∩α≡α∞σ≥≡ NAME ε∩σ≡α≥ε≡α <PARAM> ∩σ≡σΣασ≥± Φ∞ ∩α≡α∞σ≥≡α α∩δσ≥α, α ≈σ≡στ ∩α≡α∞σ≥≡ VALUE - τφα≈σφΦσ ±εε≥Γσ≥±≥Γ≤■∙σπε ∩α≡α∞σ≥≡α. ╩αΩ ∩α≡α∞σ≥≡ ∞εµσ≥ ∩εδ≤≈Φ≥ⁿ τφα≈σφΦσ ∩α≡α∞σ≥≡εΓ? ─δ ∩εδ≤≈σφΦ τφα≈σφΦ δ■ßεπε ∩α≡α∞σ≥≡α α∩δσ≥ Σεδµσφ Φ±∩εδⁿτεΓα≥ⁿ ∞σ≥εΣ getParameter. ┬ Ωα≈σ±≥Γσ σΣΦφ±≥Γσφφεπε ∩α≡α∞σ≥≡α ²≥ε∞≤ ∞σ≥εΣ≤ ∩σ≡σΣασ≥± Φ∞ ∩α≡α∞σ≥≡α α∩δσ≥α Γ ΓΦΣσ ±≥≡εΩΦ ≥Φ∩α String, φα∩≡Φ∞σ≡: parm_TestString = getParameter("TestString"); ╬ß√≈φε Γ α∩δσ≥σ ≥αΩµσ ε∩≡σΣσδ σ≥± ∞σ≥εΣ getParameterInfo, ΓετΓ≡α∙α■∙ΦΘ Φφ⌠ε≡∞α÷Φ■ ε ∩α≡α∞σ≥≡α⌡. ┬ε≥ Φ±⌡εΣφ√Θ ≥σΩ±≥ ²≥επε ∞σ≥εΣα Σδ φα°σπε α∩δσ≥α Draw: public String[][] getParameterInfo() { String[][] info = { { "TestString", "String", "Test string" } }; return info; } ╠σ≥εΣ getParameterInfo ΓετΓ≡α∙ασ≥ ∞α±±ΦΓ ∞α±±ΦΓεΓ ≥σΩ±≥εΓ√⌡ ±≥≡εΩ. ╧σ≡Γα ±≥≡εΩα ≤Ωατ√Γασ≥ Φ∞ ∩α≡α∞σ≥≡α, Γ≥ε≡α - ≥Φ∩ ∩σ≡σΣαΓασ∞√⌡ ≈σ≡στ φσπε Σαφφ√⌡, α ≥≡σ≥ⁿ - τφα≈σφΦσ ∩α≡α∞σ≥≡α ∩ε ≤∞εδ≈αφΦ■. ╠σ≥εΣ paint╧σ≡Γ√∞ Σσδε∞ ∞σ≥εΣ paint ε∩≡σΣσδ σ≥ ≡ατ∞σ≡√ εΩφα α∩δσ≥α, Γ√τ√Γα Σδ ²≥επε ∞σ≥εΣ getSize: Dimension dimAppWndDimension = getSize(); ╠σ≥εΣ getSize ΓετΓ≡α∙ασ≥ ±±√δΩ≤ φα εß·σΩ≥ Ωδα±±α Dimension, ⌡≡αφ ∙ΦΘ Γ√±ε≥≤ Φ °Φ≡Φφ≤ εß·σΩ≥α:
┬√±ε≥α public int height;
╪Φ≡Φφα public int width; ┬ Ωδα±±σ Dimension ∩≡σΣ≤±∞ε≥≡σφε ≥≡Φ Ωεφ±≥≡≤Ω≥ε≡α Φ εΣΦφ ∞σ≥εΣ: public Dimension(); public Dimension(Dimension d); public Dimension(int width, int height);
╧εδ≤≈σφΦσ ±≥≡εΩΦ, ∩≡σΣ±≥αΓδ ■∙σΘ Ωδα±± public String toString(); ╧ε±δσ ε∩≡σΣσδσφΦ ≡ατ∞σ≡εΓ εΩφα α∩δσ≥α ∞σ≥εΣ paint ±≥Φ≡ασ≥ ±εΣσ≡µΦ∞εσ Γ±σπε εΩφα: g.clearRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); ─αδσσ Γ Ωεφ≥σΩ±≥σ ε≥εß≡αµσφΦ ≤±≥αφαΓδΦΓασ≥± µσδ≥√Θ ÷Γσ≥: g.setColor(Color.yellow); ▌≥Φ∞ ÷Γσ≥ε∞ τα∩εδφ σ≥± Γφ≤≥≡σφφ εßδα±≥ⁿ εΩφα α∩δσ≥α, Σδ ≈σπε ∩≡Φ∞σφ σ≥± ∞σ≥εΣ fillRect: g.fillRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); ╟α≥σ∞ ∞σ≥εΣ paint ≤±≥αφαΓδΦΓασ≥ Γ Ωεφ≥σΩ±≥σ ε≥εß≡αµσφΦ ≈σ≡φ√Θ ÷Γσ≥ Φ ≡Φ±≤σ≥ ≥εφΩ≤■ ≈σ≡φ≤■ ≡α∞Ω≤ ΓεΩ≡≤π εΩφα α∩δσ≥α: g.setColor(Color.black); g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); ═α ±δσΣ≤■∙σ∞ ²≥α∩σ ∞√ ∩εδ≤≈ασ∞ ∞σ≥≡ΦΩΦ ≥σΩ≤∙σπε °≡Φ⌠≥α, Γ√ß≡αφφεπε Γ Ωεφ≥σΩ±≥ ε≥εß≡αµσφΦ : fm = g.getFontMetrics(); ╧εδⁿτ≤ ±ⁿ ²≥Φ∞Φ ∞σ≥≡ΦΩα∞Φ, ∞√ ε∩≡σΣσδ σ∞ Γ√±ε≥≤ ±Φ∞ΓεδεΓ ≥σΩ≤∙σπε °≡Φ⌠≥α Φ τα∩Φ±√Γασ∞ σσ Γ ∩εδσ yStep: yStep = fm.getHeight(); ╧ε±δσ ²≥επε ∞σ≥εΣ paint τα∩≤±Ωασ≥ ÷ΦΩδ ∩ε Γ±σ∞ °≡Φ⌠≥α∞, ≤±≥αφεΓδσφφ√∞ Γ ±Φ±≥σ∞σ: for(int i = 0; i < szFontList.length; i++) { . . . } ╩εδΦ≈σ±≥Γε Σε±≥≤∩φ√⌡ °≡Φ⌠≥εΓ ≡αΓφε ≡ατ∞σ≡≤ ∞α±±ΦΓα szFontList, Ωε≥ε≡εσ Γ√≈Φ±δ σ≥± ΩαΩ szFontList.length. ╠σ≥εΣ paint Γ√∩Φ±√Γασ≥ Γ εΩφσ α∩δσ≥α φατΓαφΦσ ΩαµΣεπε °≡Φ⌠≥α, ≤±≥αφαΓδΦΓα Σδ ²≥επε °≡Φ⌠≥ Helvetica ≡ατ∞σ≡ε∞ 12 ∩ΦΩ±σδεΓ: g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g.drawString(szFontList[i], 10, yStart + yStep * i); ╤∞σ∙σφΦσ ΩαµΣεΘ φεΓεΘ ±≥≡εΩΦ ± φατΓαφΦσ∞ °≡Φ⌠≥α Γ√≈Φ±δ σ≥± Φ±⌡εΣ Φτ Γ√±ε≥√ ±Φ∞ΓεδεΓ ≤±≥αφεΓδσφφεπε °≡Φ⌠≥α: fm = g.getFontMetrics(); yStep = fm.getHeight(); ╧ε±δσ φατΓαφΦ °≡Φ⌠≥α ∞σ≥εΣ paint ≡Φ±≤σ≥ Γ εΩφσ α∩δσ≥α ≥σΩ±≥εΓ≤■ ±≥≡εΩ≤ parm_TestString, ∩εδ≤≈σφφ≤■ ≈σ≡στ ∩α≡α∞σ≥≡ ± Φ∞σφσ∞ "TestString": g.setFont(new Font(szFontList[i], Font.PLAIN, 12)); g.drawString(parm_TestString, 100, yStart + yStep * i); ╧σ≡σΣ ≥σ∞ ΩαΩ ∩σ≡σΘ≥Φ Ω ≡Φ±εΓαφΦ■ πσε∞σ≥≡Φ≈σ±ΩΦ⌡ ⌠Φπ≤≡, ∞σ≥εΣ paint τα∩ε∞Φφασ≥ Γ ∩εδσ yDraw Ωεε≡ΣΦφα≥≤ ∩ε±δσΣφσΘ ±≥≡εΩΦ φατΓαφΦ °≡Φ⌠≥α, ±ΣσδαΓ ε≥±≥≤∩ Γ√±ε≥εΘ yStep : int yDraw; yDraw = yStart + yStep * szFontList.length + yStep; ╧σ≡Γα ⌠Φπ≤≡α, Ωε≥ε≡≤■ ≡Φ±≤σ≥ φα° α∩δσ≥, ²≥ε ∞φεπε≤πεδⁿφΦΩ. ╠√ ±ετΣασ∞ ∞φεπε≤πεδⁿφΦΩ ΩαΩ εß·σΩ≥ Ωδα±±α Polygon: Polygon p = new Polygon(); ┬ ²≥ε≥ εß·σΩ≥ ∩≡Φ ∩ε∞ε∙Φ ∞σ≥εΣα addPoint ΣεßαΓδ σ≥± φσ±ΩεδⁿΩε ≥ε≈σΩ: p.addPoint(70, yDraw); p.addPoint(150, yDraw + 30); p.addPoint(160, yDraw + 80); p.addPoint(190, yDraw + 60); p.addPoint(140, yDraw + 30); p.addPoint(70, yDraw + 39); ╧ε±δσ ΣεßαΓδσφΦ Γ±σ⌡ ≥ε≈σΩ ∞σ≥εΣ paint ≡Φ±≤σ≥ ∞φεπε≤πεδⁿφΦΩ, Γ√τ√Γα Σδ ²≥επε ∞σ≥εΣ drawPolygon: g.drawPolygon(p); ╟α≥σ∞ ∞√ ≤±≥αφαΓδΦΓασ∞ Γ Ωεφ≥σΩ±≥σ ε≥εß≡αµσφΦ Ω≡α±φ√Θ ÷Γσ≥ Φ ≡Φ±≤σ∞ ∩≡ ∞ε≤πεδⁿφΦΩ: g.setColor(Color.red); g.drawRect(10, yDraw + 85, 200, 100); ╟α≥σ∞ ∞σ≥εΣ paint Γ∩Φ±√Γασ≥ Γ ²≥ε≥ ∩≡ ∞ε≤πεδⁿφΦΩ ±σπ∞σφ≥ εΩ≡≤µφε±≥Φ: g.setColor(Color.black); g.drawArc(10, yDraw + 85, 200, 100, -50, 320); ─εΩ≤∞σφ≥ HTML Σδ α∩δσ≥α Draw─εΩ≤∞σφ≥ HTML Σδ α∩δσ≥α Draw φσ Φ∞σσ≥ φΦΩαΩΦ⌡ ε±εßσφφε±≥σΘ. ╬φ ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 2. ╦Φ±≥Φφπ 2. ╘αΘδ draw.tmp.html <applet name="draw" code="draw" codebase="file:/e:/Sun/Articles/vol4/src/draw" width="250" height="350" align="Top" alt="If you had a java-enabled browser, you would see an applet here." > <param name="TestString" value="Test string"> <hr>If your browser recognized the applet tag, you would see an applet here.<hr> </applet> |